package restaurante.util.persistencia;

import java.util.logging.Level;
import java.util.logging.Logger;

public class DAOFactory {

    public  String TIPO_JDBC = "JDBC";
    public  String TIPO_HIBERNATE = "Hibernate";
    public  String TIPO_ARQUIVO = "Arquivo";
    public  String TIPO_JPA = "JPA";
    private String tipoFabrica = TIPO_JPA;
    
    private static DAOFactory instance = new DAOFactory();
    public static DAOFactory getInstance() {
        if (instance == null) {
            instance = new DAOFactory();
        }
        return instance;
    }
    
    public DAOGenerico obterDAO( Class classe) {
        String nome = classe.getName();
        nome = nome.replace("cdp", "cgd");
        nome = nome + "DAO" + this.getTipoFabrica();
        try {
            return (DAOGenerico) Class.forName(nome).newInstance();
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(DAOFactory.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(DAOFactory.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(DAOFactory.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public String getTipoFabrica() {
        return tipoFabrica;
    }

    public void setTipoFabrica(String tipoFabrica) {
        this.tipoFabrica = tipoFabrica;
    }
}
